package com.wly.login.auth.token;


import cn.hutool.jwt.JWTUtil;
import cn.hutool.jwt.signers.JWTSigner;
import cn.hutool.jwt.signers.JWTSignerUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;


/**
 * @author wly
 */
@Component
// TODO 使用静态类
@Slf4j
public class JwtTokenService {


	// 不会搞
//	@Value("${jwt.secret}")
//	private String secret;

	/**
	 * 生成token
	 *
	 * @param username 用户姓名
	 * @return token
	 * @author wly
	 * @date 2025-02-16
	 */
	public static String generateToken(Integer userId) {

		// 1、Headers
		Map<String, Object> headers= new HashMap<>();
		// -算法
		headers.put("alg", "HS256");
		// -令牌
		headers.put("typ", "JWT");

		// 2、payload
		Map<String, Object> payload = new HashMap<>();
		// 用户信息
		payload.put("userId", userId);
		// -有效期 1小时
		payload.put("exp", System.currentTimeMillis() +3600_00);

		// 3、signature
		// -密钥
		String secret = "my-secret-key";
		// -签发人
		JWTSigner signer = JWTSignerUtil.hs256(secret.getBytes());

		String token = JWTUtil.createToken(headers, payload, signer);
		// TODO log去打日志
//		System.out.println("=========================Token:" +token);   不会异步
		log.info("=========================Token:" +token);
		return token;
	}
}

